package com.iuie.ns.system.controller.setting;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.iuie.ns.frame.web.dataset.vo.Page;
import com.iuie.ns.frame.web.response.vo.ResponseInfo;
import com.iuie.ns.system.service.role.ISysRoleService;
import com.iuie.ns.system.service.setting.ISysUserSettingTemplateService;
import com.iuie.ns.system.vo.resource.SysResourceVO;
import com.iuie.ns.system.vo.role.SysRoleVO;

/**
 * 用户设置模板-controller
 * @author liujie
 * @date 2018年3月28日上午10:32:26
 */
@Controller
@RequestMapping("setting/template")
public class SysUserSettingTemplateController {
	
	private static final Logger logger = LoggerFactory.getLogger(SysUserSettingTemplateController.class);
	
	@Resource
	private ISysUserSettingTemplateService userSettingTemplateService;
	
	@Resource
	private ISysRoleService roleService;
	
	/**
	 * 用户设置模板-index
	 * @param request
	 * @return
	 * @date 2018年3月27日上午8:23:21
	 */
	@RequestMapping("index")
	public String userSettingTemplateIndex(HttpServletRequest request) {
		return "view-system/setting/userSettingTemplate";
	}
	
	/**
	 * 角色与用户设置模板的关系-index
	 * @param request
	 * @return
	 * @date 2018年3月27日上午8:23:21
	 */
	@RequestMapping("role/{roleId}/with/userSetting/index")
	public String roleWithUserSetting(HttpServletRequest request, @PathVariable("roleId") String roleId) {
		SysRoleVO role = roleService.findById(roleId);
		request.setAttribute("roleId", roleId);
		request.setAttribute("roleName", role.getRoleName());
		return "view-system/role/roleUserSetting";
	}
	
	/**
	 * 新增用户设置模板-index
	 * @param request
	 * @return
	 * @date 2018年3月28日上午10:37:45
	 */
	@RequestMapping("add/index")
	public String addUserSettingTemplateIndex(HttpServletRequest request) {
		return "view-system/setting/userSettingTemplateAdd";
	}
	
	/**
	 * 更新用户设置模板
	 * @param request
	 * @param resId
	 * @return
	 * @date 2018年3月29日上午10:17:04
	 */
	@RequestMapping("update/{resId}/index")
	public String updateUserSettingTemplateIndex(HttpServletRequest request, @PathVariable("resId") String resId) {
		request.setAttribute("resId", resId);
		return "view-system/setting/userSettingTemplateAdd";
	}

	/**
	 * 根据条件查询用户设置模板
	 * @param condition
	 * @param page
	 * @return
	 * @date 2018年3月27日上午8:54:32
	 */
	@RequestMapping(value = "find/page", method = RequestMethod.GET)
	@ResponseBody
	public ResponseInfo findTemplateByPage(SysResourceVO condition, Page page) {
		List<SysResourceVO> list = userSettingTemplateService.findTemplateByPage(condition, page);
		return ResponseInfo.successInfo(list, page);
	}
	
	/**
	 * 查询所有用户设置模板
	 * @return
	 * @date 2018年3月29日上午10:19:00
	 */
	@RequestMapping(value = "find/all", method = RequestMethod.GET)
	@ResponseBody
	public ResponseInfo findAllTemplate() {
		List<SysResourceVO> list = userSettingTemplateService.findAll();
		return ResponseInfo.successInfoByObject(list);
	}
	
	/**
	 * 根据角色ID查询关联的角色设置模板
	 * @param roleId
	 * @return
	 * @date 2018年3月29日上午10:22:45
	 */
	@RequestMapping(value = "find/roleId/{roleId}", method = RequestMethod.GET)
	@ResponseBody
	public ResponseInfo findTemplateByRoleId(@PathVariable("roleId") String roleId) {
		List<SysResourceVO> list = userSettingTemplateService.findTemplateByRoleId(roleId);
		return ResponseInfo.successInfoByObject(list);
	}
	
	/**
	 * 保存用户设置与角色的关系
	 * @param roleId
	 * @param resIdArr
	 * @return
	 * @date 2018年3月30日上午8:50:17
	 */
	@RequestMapping(value = "save/roleWithUserSetting/{roleId}", method = RequestMethod.POST)
	@ResponseBody
	public ResponseInfo saveUserSettingWithRoleRelation(@PathVariable("roleId") String roleId, 
			@RequestParam(required=false, value="resIdArr[]") String[] resIdArr) {
		logger.info("正在保存保存用户设置与角色的关系，roleId = {}, resIdArr = {}", new Object[]{roleId, resIdArr});
		userSettingTemplateService.saveUserSettingWithRoleRelation(roleId, resIdArr);
		return ResponseInfo.successInfo("保存成功！");
	}
	
	/**
	 * 新增用户设置模板
	 * @param one
	 * @return
	 * @date 2018年3月27日上午8:55:50
	 */
	@RequestMapping(value = "add", method = RequestMethod.POST)
	@ResponseBody
	public ResponseInfo addTemplate(SysResourceVO one) {
		userSettingTemplateService.addOneTemplate(one);
		return ResponseInfo.successInfo("新增用户设置模板成功！");
	}
	
	/**
	 * 修改用户设置模板
	 * @param one
	 * @param resId
	 * @return
	 * @date 2018年3月28日上午10:46:58
	 */
	@RequestMapping(value = "update/{resId}", method = RequestMethod.POST)
	@ResponseBody
	public ResponseInfo updateTemplate(SysResourceVO one, @PathVariable("resId") String resId) {
		userSettingTemplateService.updateOneTemplate(one, resId);
		return ResponseInfo.successInfo("修改用户设置模板成功！");
	}
	
	/**
	 * 根据id删除用户设置模板
	 * @param resId
	 * @return
	 * @date 2018年3月28日下午10:34:42
	 */
	@RequestMapping(value = "delete/{resId}", method = RequestMethod.POST)
	@ResponseBody
	public ResponseInfo deleteTemplate(@PathVariable("resId") String resId) {
		userSettingTemplateService.deleteTemplate(resId);
		return ResponseInfo.successInfo("删除用户设置模板成功！");
	}
	
	/**
	 * 根据Id查询用户设置模板
	 * @param resId
	 * @return
	 * @date 2018年3月28日下午10:45:37
	 */
	@RequestMapping(value = "find/id/{resId}", method = RequestMethod.GET)
	@ResponseBody
	public ResponseInfo findById(@PathVariable("resId") String resId) {
		SysResourceVO item = userSettingTemplateService.findById(resId);
		return ResponseInfo.successInfoByObject(item);
	}
	
	/**
	 * 根据角色ID查询关联的用户设置模板
	 * @param roleId
	 * @return
	 * @date 2018年3月31日下午4:11:10
	 */
	@RequestMapping(value = "find/string/userSettingTemplates/{roleId}", method = RequestMethod.GET)
	@ResponseBody
	public ResponseInfo findStringOfUserSettingTemplatesByRoleId(@PathVariable("roleId") String roleId) {
		String userSettings = userSettingTemplateService.findStringOfUserSettingTemplatesByRoleId(roleId);
		return ResponseInfo.successInfoByObject(userSettings);
	}
	
}
